V8 ã®ææ©çæé©åææ³ãJavaScript å®è¡ã®äºæž¬ãšåŒ·åæ¹æ³ãããã©ãŒãã³ã¹ãžã®åœ±é¿ãæ¢ããŸããæéåã®ããã« V8 ã广çã«æé©åã§ããã³ãŒãã®æžãæ¹ãåŠã³ãŸãããã
JavaScript V8 ã®ææ©çæé©åïŒäºæž¬çã³ãŒã匷åã®æ·±æã
Web ãæ¯ããèšèªã§ãã JavaScript ã¯ããã®å®è¡ç°å¢ã®ããã©ãŒãã³ã¹ã«å€§ããäŸåããŠããŸããChrome ã Node.js ã§äœ¿çšãããŠãã Google ã® V8 ãšã³ãžã³ã¯ããã®åéã®äž»èŠãªãã¬ã€ã€ãŒã§ãããé«éã§å¹çç㪠JavaScript å®è¡ãå®çŸããããã«é«åºŠãªæé©åæè¡ãæ¡çšããŠããŸããV8 ã®ããã©ãŒãã³ã¹ã®åŒ·ã¿ã®æãéèŠãªåŽé¢ã®äžã€ã¯ãææ©çæé©åã®äœ¿çšã§ãããã®ããã°èšäºã§ã¯ãV8 ã«ãããææ©çæé©åã«ã€ããŠå æ¬çã«è§£èª¬ãããã®ä»çµã¿ãå©ç¹ããããŠéçºè ãããã«ãã£ãŠå©çãåŸãããã³ãŒããã©ã®ããã«æžãããã«ã€ããŠè©³è¿°ããŸãã
ææ©çæé©åãšã¯ïŒ
ææ©çæé©åã¯ãã³ã³ãã€ã©ãã³ãŒãã®å®è¡æåäœã«é¢ããä»®å®ãç«ãŠãæé©åã®äžçš®ã§ãããããã®ä»®å®ã¯ã芳å¯ããããã¿ãŒã³ãšãã¥ãŒãªã¹ãã£ãã¯ã«åºã¥ããŠããŸããä»®å®ãçã§ããã°ãæé©åãããã³ãŒãã¯å€§å¹ ã«é«éã«å®è¡ã§ããŸããããããä»®å®ãéåãããå ŽåïŒæé©åè§£é€ïŒããšã³ãžã³ã¯ã³ãŒãã®æé©åãããŠããªãããŒãžã§ã³ã«ããŒã«ããã¯ããå¿ èŠããããããã©ãŒãã³ã¹ã®ããã«ãã£ãçºçããŸãã
ããã¯ãã·ã§ããã¬ã·ãã®æ¬¡ã®ã¹ããããäºæž¬ããäºåã«ææãæºåãããããªãã®ã§ããäºæž¬ãããã¹ããããæ£ãããã°ã調çããã»ã¹ã¯ããå¹ççã«ãªããŸããããããã·ã§ãã誀ã£ãŠäºæž¬ããå ŽåãåŸæ»ãããŠæåããããçŽãå¿ èŠããããæéãšãªãœãŒã¹ãç¡é§ã«ããŸãã
V8 ã®æé©åãã€ãã©ã€ã³ïŒCrankshaft ãš Turbofan
V8 ã«ãããææ©çæé©åãçè§£ããã«ã¯ããã®æé©åãã€ãã©ã€ã³ã®ããŸããŸãªã¬ãã«ã«ã€ããŠç¥ãããšãéèŠã§ããV8 ã¯äŒçµ±çã« 2 ã€ã®äž»èŠãªæé©åã³ã³ãã€ã©ã䜿çšããŠããŸããïŒCrankshaft ãš Turbofan ã§ããCrankshaft ã¯ãŸã ååšããŸãããTurbofan ã¯çŸä»£ã® V8 ããŒãžã§ã³ã§ã¯äž»èŠãªæé©åã³ã³ãã€ã©ãšãªã£ãŠããŸãããã®èšäºã§ã¯äž»ã« Turbofan ã«çŠç¹ãåœãŠãŸãããCrankshaft ã«ã€ããŠãç°¡åã«è§ŠããŸãã
Crankshaft
Crankshaft 㯠V8 ã®å€ãæé©åã³ã³ãã€ã©ã§ããã以äžã®ãããªæè¡ã䜿çšããŠããŸããïŒ
- é ãã¯ã©ã¹ïŒHidden ClassesïŒïŒ V8 ã¯ããªããžã§ã¯ãã®æ§é ïŒããããã£ã®é åºãšåïŒã«åºã¥ããŠãé ãã¯ã©ã¹ããå²ãåœãŠãŸãããªããžã§ã¯ããåãé ãã¯ã©ã¹ãæã€å ŽåãV8 ã¯ããããã£ãžã®ã¢ã¯ã»ã¹ãæé©åã§ããŸãã
- ã€ã³ã©ã€ã³ãã£ãã·ã¥ïŒInline CachingïŒïŒ Crankshaft ã¯ããããã£ã«ãã¯ã¢ããã®çµæããã£ãã·ã¥ããŸããåãé ãã¯ã©ã¹ãæã€ãªããžã§ã¯ãã§åãããããã£ã«ã¢ã¯ã»ã¹ããå ŽåãV8 ã¯ãã£ãã·ã¥ãããå€ãè¿ éã«ååŸã§ããŸãã
- æé©åè§£é€ïŒDeoptimizationïŒïŒ ã³ã³ãã€ã«äžã«ç«ãŠãããä»®å®ãåœã§ããããšã倿ããå ŽåïŒäŸïŒé ãã¯ã©ã¹ã倿Žãããå ŽåïŒãCrankshaft ã¯ã³ãŒããæé©åè§£é€ããããäœéãªã€ã³ã¿ããªã¿ã«ãã©ãŒã«ããã¯ããŸãã
Turbofan
Turbofan 㯠V8 ã®ææ°ã®æé©åã³ã³ãã€ã©ã§ããCrankshaft ãããæè»ã§å¹ççã§ããTurbofan ã®äž»ãªæ©èœã¯ä»¥äžã®éãã§ãïŒ
- äžé衚çŸïŒIntermediate Representation, IRïŒïŒ Turbofan ã¯ãããç©æ¥µçãªæé©åãå¯èœã«ãããããæŽç·Žãããäžé衚çŸã䜿çšããŸãã
- åãã£ãŒãããã¯ïŒType FeedbackïŒïŒ Turbofan ã¯ãå®è¡æã«å€æ°ã颿°ã®åäœã®åã«é¢ããæ å ±ãåéããããã«åãã£ãŒãããã¯ã«äŸåããŠããŸãããã®æ å ±ã¯ãæ å ±ã«åºã¥ããæé©åã®æ±ºå®ã«äœ¿çšãããŸãã
- ææ©çæé©åïŒ Turbofan ã¯ã倿°ã颿°ã®åäœã®åã«é¢ããä»®å®ãç«ãŠãŸãããããã®ä»®å®ãçã§ããã°ãæé©åãããã³ãŒãã¯å€§å¹ ã«é«éã«å®è¡ã§ããŸããä»®å®ãéåãããå ŽåãTurbofan ã¯ã³ãŒããæé©åè§£é€ããæé©åãããŠããªãããŒãžã§ã³ã«ãã©ãŒã«ããã¯ããŸãã
V8 (Turbofan) ã«ãããææ©çæé©åã®ä»çµã¿
Turbofan ã¯ãææ©çæé©åã®ããã«ããã€ãã®æè¡ãæ¡çšããŠããŸããããã§ã¯ãäž»èŠãªã¹ããããåè§£ããŸãïŒ
- ãããã¡ã€ãªã³ã°ãšåãã£ãŒãããã¯ïŒ V8 㯠JavaScript ã³ãŒãã®å®è¡ãç£èŠãã倿°ã颿°ã®åäœã®åã«é¢ããæ å ±ãåéããŸããããã¯åãã£ãŒãããã¯ãšåŒã°ããŸããäŸãã°ã颿°ãæŽæ°åŒæ°ã§è€æ°ååŒã³åºãããå ŽåãV8 ã¯åžžã«æŽæ°åŒæ°ã§åŒã³åºããããšæšæž¬ãããããããŸããã
- ä»®å®ã®çæïŒ åãã£ãŒãããã¯ã«åºã¥ããŠãTurbofan ã¯ã³ãŒãã®åäœã«é¢ããä»®å®ãçæããŸããäŸãã°ã倿°ã¯åžžã«æŽæ°ã§ãããšæšæž¬ãããã颿°ã¯åžžã«ç¹å®ã®åãè¿ããšæšæž¬ããããããããããŸããã
- æé©åã³ãŒãçæïŒ Turbofan ã¯ãçæãããä»®å®ã«åºã¥ããŠæé©åããããã·ã³ã³ãŒããçæããŸãããã®æé©åãããã³ãŒãã¯ãæé©åãããŠããªãã³ãŒããããã¯ããã«é«éãªå ŽåããããããŸããäŸãã°ã倿°ãåžžã«æŽæ°ã§ãããšä»®å®ããå Žåã倿°ã®åããã§ãã¯ããããšãªããçŽæ¥æŽæ°æŒç®ãå®è¡ããã³ãŒããçæã§ããŸãã
- ã¬ãŒãã®æ¿å ¥ïŒ Turbofan ã¯ãå®è¡æã«ä»®å®ããŸã æå¹ã§ãããã©ããããã§ãã¯ããããã«ãæé©åãããã³ãŒãã«ã¬ãŒããæ¿å ¥ããŸãããããã®ã¬ãŒãã¯ã倿°ã颿°ã®åäœã®åããã§ãã¯ããå°ããªã³ãŒãçã§ãã
- æé©åè§£é€ïŒ ã¬ãŒãã倱æããå Žåãããã¯ä»®å®ã® 1 ã€ãéåãããããšãæå³ããŸãããã®å ŽåãTurbofan ã¯ã³ãŒããæé©åè§£é€ããæé©åãããŠããªãããŒãžã§ã³ã«ãã©ãŒã«ããã¯ããŸããæé©åè§£é€ã¯ãæé©åãããã³ãŒããç Žæ£ããŠé¢æ°ãåã³ã³ãã€ã«ããå¿ èŠããããããã³ã¹ããããããŸãã
äŸïŒå ç®ã®ææ©çæé©å
以äžã® JavaScript 颿°ãèããŠã¿ãŸãããïŒ
function add(x, y) {
return x + y;
}
add(1, 2); // æŽæ°ã§ã®æåã®åŒã³åºã
add(3, 4);
add(5, 6);
V8 㯠`add` ãæŽæ°åŒæ°ã§è€æ°ååŒã³åºãããããšã芳å¯ããŸãã`x` ãš `y` ã¯åžžã«æŽæ°ã§ãããšæšæž¬ããŸãããã®ä»®å®ã«åºã¥ããŠãTurbofan 㯠`x` ãš `y` ã®åããã§ãã¯ããããšãªããçŽæ¥æŽæ°å ç®ãå®è¡ããæé©åããããã·ã³ã³ãŒããçæããŸãããŸããå ç®ãå®è¡ããåã« `x` ãš `y` ãå®éã«æŽæ°ã§ããããšããã§ãã¯ããã¬ãŒããæ¿å
¥ããŸãã
次ã«ãæåååŒæ°ã§é¢æ°ãåŒã³åºãããå Žåãäœãèµ·ããããèããŠã¿ãŸãããïŒ
add("hello", "world"); // åŸã§æååã§ã®åŒã³åºã
`x` ãš `y` ããã¯ãæŽæ°ã§ã¯ãªããããã¬ãŒãã¯å€±æããŸããTurbofan ã¯ã³ãŒããæé©åè§£é€ããæååãåŠçã§ããæé©åãããŠããªãããŒãžã§ã³ã«ãã©ãŒã«ããã¯ããŸããæé©åãããŠããªãããŒãžã§ã³ã¯ãå ç®ãå®è¡ããåã« `x` ãš `y` ã®åããã§ãã¯ããããããæååã®å Žåã¯æååé£çµãå®è¡ããŸãã
ææ©çæé©åã®å©ç¹
ææ©çæé©åã¯ããã€ãã®å©ç¹ãæäŸããŸãïŒ
- ããã©ãŒãã³ã¹ã®åäžïŒ ä»®å®ãç«ãŠãæé©åãããã³ãŒããçæããããšã§ãææ©çæé©å㯠JavaScript ã³ãŒãã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
- åçé©å¿ïŒ V8 ã¯å®è¡æã«å€åããã³ãŒãã®åäœã«é©å¿ã§ããŸããã³ã³ãã€ã«äžã«ç«ãŠãããä»®å®ãç¡å¹ã«ãªã£ãå Žåããšã³ãžã³ã¯ã³ãŒããæé©åè§£é€ããæ°ããåäœã«åºã¥ããŠåæé©åã§ããŸãã
- ãªãŒããŒãããã®åæžïŒ äžèŠãªåãã§ãã¯ãåé¿ããããšã§ãææ©çæé©å㯠JavaScript å®è¡ã®ãªãŒããŒããããåæžã§ããŸãã
ææ©çæé©åã®æ¬ ç¹
ææ©çæé©åã«ã¯ããã€ãã®æ¬ ç¹ããããŸãïŒ
- æé©åè§£é€ã®ãªãŒããŒãããïŒ æé©åè§£é€ã¯ãæé©åãããã³ãŒããç Žæ£ããŠé¢æ°ãåã³ã³ãã€ã«ããå¿ èŠããããããã³ã¹ããããããŸããé »ç¹ãªæé©åè§£é€ã¯ãææ©çæé©åã®ããã©ãŒãã³ã¹äžã®å©ç¹ãçžæ®ºããå¯èœæ§ããããŸãã
- ã³ãŒãã®è€éãïŒ ææ©çæé©å㯠V8 ãšã³ãžã³ã«è€éãã远å ããŸãããã®è€éãã¯ããããã°ãšä¿å®ãããå°é£ã«ããå¯èœæ§ããããŸãã
- äºæž¬äžå¯èœãªããã©ãŒãã³ã¹ïŒ JavaScript ã³ãŒãã®ããã©ãŒãã³ã¹ã¯ãææ©çæé©åã«ããäºæž¬äžå¯èœã«ãªãå¯èœæ§ããããŸããã³ãŒãã®ããããªå€æŽããå€§å¹ ãªããã©ãŒãã³ã¹ã®éãã«ã€ãªããããšããããŸãã
V8 ã广çã«æé©åã§ããã³ãŒãã®æžãæ¹
éçºè ã¯ãããã€ãã®ã¬ã€ãã©ã€ã³ã«åŸãããšã§ãææ©çæé©åã«é©ããã³ãŒããèšè¿°ã§ããŸãïŒ
- äžè²«ããåã䜿çšããïŒ å€æ°ã®åã倿Žããããšã¯é¿ããŠãã ãããäŸãã°ã倿°ãæŽæ°ãšããŠåæåããŠãããåŸã§æååãä»£å ¥ããªãã§ãã ããã
- ããªã¢ãŒãã£ãºã ãé¿ããïŒ ç°ãªãåã®åŒæ°ãæã€é¢æ°ã䜿çšããããšã¯é¿ããŠãã ãããå¯èœã§ããã°ãç°ãªãåããšã«åå¥ã®é¢æ°ãäœæããŠãã ããã
- ã³ã³ã¹ãã©ã¯ã¿ã§ããããã£ãåæåããïŒ ãªããžã§ã¯ãã®ãã¹ãŠã®ããããã£ãã³ã³ã¹ãã©ã¯ã¿ã§åæåãããŠããããšã確èªããŠãã ãããããã«ãããV8 ã¯äžè²«ããé ãã¯ã©ã¹ãäœæããã®ã«åœ¹ç«ã¡ãŸãã
- 峿 Œã¢ãŒãïŒStrict ModeïŒã䜿çšããïŒ å³æ Œã¢ãŒãã¯ãæé©åã劚ããå¯èœæ§ã®ããæå³ããªãå倿ããã®ä»ã®åäœãé²ãã®ã«åœ¹ç«ã¡ãŸãã
- ã³ãŒãã®ãã³ãããŒã¯ãè¡ãïŒ ãã³ãããŒã¯ããŒã«ã䜿çšããŠã³ãŒãã®ããã©ãŒãã³ã¹ã枬å®ããæœåšçãªããã«ããã¯ãç¹å®ããŠãã ããã
å®è·µçãªäŸãšãã¹ããã©ã¯ãã£ã¹
äŸ 1ïŒåã®æ··ä¹±ã®åé¿
æªãäŸïŒ
function processData(data) {
let value = 0;
if (typeof data === 'number') {
value = data * 2;
} else if (typeof data === 'string') {
value = data.length;
}
return value;
}
ãã®äŸã§ã¯ã`value` 倿°ã¯å ¥åã«å¿ããŠæ°å€ãŸãã¯æååã«ãªããŸããããã«ãããV8 ã颿°ãæé©åããããšãå°é£ã«ãªããŸãã
è¯ãäŸïŒ
function processNumber(data) {
return data * 2;
}
function processString(data) {
return data.length;
}
function processData(data) {
if (typeof data === 'number') {
return processNumber(data);
} else if (typeof data === 'string') {
return processString(data);
} else {
return 0; // ãŸãã¯ãšã©ãŒãé©åã«åŠçãã
}
}
ããã§ã¯ãããžãã¯ã 2 ã€ã®é¢æ°ã«åé¢ããŸããã1 ã€ã¯æ°å€çšããã 1 ã€ã¯æååçšã§ããããã«ãããV8 ã¯å颿°ãåå¥ã«æé©åã§ããŸãã
äŸ 2ïŒãªããžã§ã¯ãããããã£ã®åæå
æªãäŸïŒ
function Point(x) {
this.x = x;
}
const point = new Point(10);
point.y = 20; // ãªããžã§ã¯ãäœæåŸã«ããããã£ã远å
ãªããžã§ã¯ãäœæåŸã« `y` ããããã£ã远å ãããšãé ãã¯ã©ã¹ã®å€æŽãæé©åè§£é€ã«ã€ãªããå¯èœæ§ããããŸãã
è¯ãäŸïŒ
function Point(x, y) {
this.x = x;
this.y = y || 0; // ã³ã³ã¹ãã©ã¯ã¿ã§ãã¹ãŠã®ããããã£ãåæå
}
const point = new Point(10, 20);
ãã¹ãŠã®ããããã£ãã³ã³ã¹ãã©ã¯ã¿ã§åæåããããšã§ãäžè²«ããé ãã¯ã©ã¹ãä¿èšŒãããŸãã
V8 æé©åã®åæããŒã«
ããã€ãã®ããŒã«ã¯ãV8 ãã³ãŒããã©ã®ããã«æé©åããŠããããåæããã®ã«åœ¹ç«ã¡ãŸãïŒ
- Chrome DevToolsïŒ Chrome DevTools ã¯ãJavaScript ã³ãŒãã®ãããã¡ã€ãªã³ã°ãé ãã¯ã©ã¹ã®æ€æ»ãæé©åçµ±èšã®åæã®ããã®ããŒã«ãæäŸããŸãã
- V8 ãã®ã³ã°ïŒ V8 ã¯ãæé©åããã³æé©åè§£é€ã€ãã³ãããã°ã«èšé²ããããã«æ§æã§ããŸããããã«ããããšã³ãžã³ãã³ãŒããã©ã®ããã«æé©åããŠãããã«ã€ããŠã®è²ŽéãªæŽå¯ãåŸãããŸãã Node.js ãŸã㯠Chrome ã DevTools ãéããŠå®è¡ããéã«ã`--trace-opt` ããã³ `--trace-deopt` ãã©ã°ã䜿çšããŠãã ããã
- Node.js InspectorïŒ Node.js ã®çµã¿èŸŒã¿ã€ã³ã¹ãã¯ã¿ã«ãããChrome DevTools ãšåæ§ã®æ¹æ³ã§ã³ãŒãããããã°ããã³ãããã¡ã€ãªã³ã°ã§ããŸãã
äŸãã°ãChrome DevTools ã䜿çšããŠããã©ãŒãã³ã¹ãããã¡ã€ã«ãèšé²ãããããã ã¢ããããŸãã¯ãã³ãŒã«ããªãŒããã¥ãŒã調ã¹ãããšã§ãå®è¡ã«æéãããã£ãŠãã颿°ãç¹å®ã§ããŸããé »ç¹ã«æé©åè§£é€ãããŠãã颿°ãæ¢ãããšãã§ããŸããããã«æ·±ã調ã¹ãã«ã¯ãåè¿°ã®ããã« V8 ã®ãã®ã³ã°æ©èœãæå¹ã«ããæé©åè§£é€ã®çç±ã瀺ãåºåãåæããŠãã ããã
JavaScript æé©åã«ãããã°ããŒãã«ãªèæ ®äºé
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã®ããã« JavaScript ã³ãŒããæé©åããå Žåã以äžã®ç¹ãèæ ®ããŠãã ããïŒ
- ãããã¯ãŒã¯é å»¶ïŒ ãããã¯ãŒã¯é å»¶ã¯ãWeb ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãããããã¯ãŒã¯ãªã¯ãšã¹ãã®æ°ãšè»¢éãããããŒã¿ã®éãæå°éã«æããããã«ã³ãŒããæé©åããŠãã ãããã³ãŒãåå²ãé å»¶èªã¿èŸŒã¿ãªã©ã®ææ³ãæ€èšããŠãã ããã
- ããã€ã¹ã®æ©èœïŒ äžçäžã®ãŠãŒã¶ãŒã¯ãããŸããŸãªæ©èœãæã€å¹ åºãããã€ã¹ã«ã¢ã¯ã»ã¹ããŠããŸããäœäŸ¡æ Œããã€ã¹ã§ãã³ãŒããããŸãå®è¡ãããããšã確èªããŠãã ãããã¬ã¹ãã³ã·ããã¶ã€ã³ãã¢ãããã£ãããŒãã£ã³ã°ãªã©ã®ææ³ãæ€èšããŠãã ããã
- åœéåãšããŒã«ã©ã€ãŒãŒã·ã§ã³ïŒ ã¢ããªã±ãŒã·ã§ã³ãè€æ°ã®èšèªããµããŒãããå¿ èŠãããå Žåã¯ãåœéåãšããŒã«ã©ã€ãŒãŒã·ã§ã³ã®ææ³ã䜿çšããŠãã³ãŒããããŸããŸãªæåãå°åã«é©å¿ã§ããããšã確èªããŠãã ããã
- ã¢ã¯ã»ã·ããªãã£ïŒ ã¢ããªã±ãŒã·ã§ã³ãé害ãæã€ãŠãŒã¶ãŒã«ãã¢ã¯ã»ã¹å¯èœã§ããããšã確èªããŠãã ãããARIA 屿§ã䜿çšããã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ã«åŸã£ãŠãã ããã
äŸïŒãããã¯ãŒã¯é床ã«åºã¥ããã¢ãããã£ãããŒãã£ã³ã°
`navigator.connection` API ã䜿çšããŠããŠãŒã¶ãŒã®ãããã¯ãŒã¯æ¥ç¶ã®çš®é¡ãæ€åºããããã«å¿ããŠãªãœãŒã¹ã®èªã¿èŸŒã¿ãé©å¿ãããããšãã§ããŸããäŸãã°ãäœéãªæ¥ç¶ã®ãŠãŒã¶ãŒã«ã¯ãäœè§£å床ã®ç»åãããå°ã㪠JavaScript ãã³ãã«ãèªã¿èŸŒãããšãã§ããŸãã
if (navigator.connection && navigator.connection.effectiveType === 'slow-2g') {
// äœè§£å床ã®ç»åèªã¿èŸŒã¿
loadLowResImages();
}
V8 ã«ãããææ©çæé©åã®æªæ¥
V8 ã®ææ©çæé©åæè¡ã¯åžžã«é²åããŠããŸããå°æ¥ã®éçºã«ã¯ä»¥äžãå«ãŸããå¯èœæ§ããããŸãïŒ
- ããé«åºŠãªåè§£æïŒ V8 ã¯ã倿°ã®åã«é¢ããããæ£ç¢ºãªä»®å®ãç«ãŠãããã«ãããé«åºŠãªåè§£ææè¡ã䜿çšããå¯èœæ§ããããŸãã
- æé©åè§£é€æŠç¥ã®æ¹åïŒ V8 ã¯ãæé©åè§£é€ã®ãªãŒããŒããããåæžããããã«ãããå¹ççãªæé©åè§£é€æŠç¥ãéçºããå¯èœæ§ããããŸãã
- æ©æ¢°åŠç¿ãšã®çµ±åïŒ V8 ã¯ãJavaScript ã³ãŒãã®åäœãäºæž¬ããããæ å ±ã«åºã¥ããæé©åã®æ±ºå®ãäžãããã«æ©æ¢°åŠç¿ã䜿çšããå¯èœæ§ããããŸãã
çµè«
ææ©çæé©åã¯ãV8 ãé«éã§å¹çç㪠JavaScript å®è¡ãå®çŸã§ãã匷åãªæè¡ã§ããææ©çæé©åã®ä»çµã¿ãçè§£ããæé©åå¯èœãªã³ãŒããèšè¿°ããããã®ãã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãéçºè 㯠JavaScript ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸããV8 ãé²åãç¶ããã«ã€ããŠãææ©çæé©å㯠Web ã®ããã©ãŒãã³ã¹ã確ä¿ããäžã§ããã«éèŠãªåœ¹å²ãæããã§ãããã
ããã©ãŒãã³ã¹ã®é«ã JavaScript ãèšè¿°ããããšã¯ãV8 ã®æé©åã ãã§ãªããè¯ãã³ãŒãã£ã³ã°ãã©ã¯ãã£ã¹ãå¹ççãªã¢ã«ãŽãªãºã ããããŠãªãœãŒã¹äœ¿çšéãžã®æ éãªæ³šæãå«ãŸããããšãå¿ããªãã§ãã ãããV8 ã®æé©åæè¡ãšäžè¬çãªããã©ãŒãã³ã¹ååã®æ·±ãçè§£ãçµã¿åãããããšã§ãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠé«éã§å¿çæ§ãé«ãã䜿ãããã Web ã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã